package com.app.service;

import com.app.common.Result;
import com.app.model.AdminUserModel;
import com.app.vo.TurnoverTrendVo;

import java.sql.Timestamp;

public interface AdminHomepageService {

    /**
     * 统计用户益联券消费情况
     *
     * @return
     */
    Result<Object> voucherConsumption(Timestamp beginTime, Timestamp endTime, AdminUserModel user);

    /**
     * 近三十天推广情况分析
     *
     * @return
     * @param user
     */
    Result<Object> Promotion(AdminUserModel user);

    /**
     * 商家们进三十天益联券的总收入情况、要是传了商家id那就是当前商家进三十天的益联券收入情况
     *
     * @param id
     * @param user
     * @return
     */
    Result<Object> voucherIncome(Integer id, AdminUserModel user);

    /**
     * 商家销量top10
     *
     * @return
     * @param user
     */
    Result<Object> top10(AdminUserModel user);

    /**
     * 营业额走势
     * * 分两种：传商家id的就差指定商家的营业额走势
     *      *        不传商家id就查所有商家营业额的总和的走势
     * @param user
     * @param type
     * @return
     */
    TurnoverTrendVo turnoverTrend(AdminUserModel user, Integer type);

    /**
     * 抽层流水走势
     * @param user
     * @param type
     * @return
     */
    TurnoverTrendVo businessTurnover(AdminUserModel user, Integer type);

    /**
     * 财务报表
     *
     * @param user
     * @param beginTime
     * @param endTime
     * @param area
     * @return
     */
    Result financialStatements(AdminUserModel user, String beginTime, String endTime, Integer area);

    /**
     * 商品订单管理后台数据统计
     * @param user
     * @return
     */
    Object goodsOrdernews(AdminUserModel user);

    /**
     * 活动订单管理数据查询
     * @param user
     * @return
     */
    Object activityOrderNews(AdminUserModel user);

    /**
     * 会员开通统计
     * @param user
     * @return
     */
    Object vipNews(AdminUserModel user);

    /**
     * 用户管理统计查询
     *
     * @param user
     * @param ifVip
     * @return
     */
    Object userNews(AdminUserModel user, Integer ifVip);

    /**
     * 凭证详细信息合计
     *
     * @param user      用户
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param areaId    区域id
     * @return {@link Result}
     */
    Object totalVoucherDetails(AdminUserModel user, String startTime, String endTime, Integer areaId,Integer page,Integer limit);

    /**
     * 总分详情
     *
     * @param user      用户
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param areaId    区域id
     * @param page      第页
     * @param limit     限制
     * @return {@link Object}
     */
    Object totalPointsDetails(AdminUserModel user, String startTime, String endTime, Integer areaId, Integer page, Integer limit);

    /**
     * 总泵送详细信息
     *
     * @param user      用户
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param areaId    区域id
     * @param page      第页
     * @param limit     限制
     * @return {@link Object}
     */
    Object totalPumpingDetails(AdminUserModel user, String startTime, String endTime, Integer areaId, Integer page, Integer limit);

    /**
     * 成员期初金额
     *
     * @param user      用户
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param areaId    区域id
     * @param page      第页
     * @param limit     限制
     * @return {@link Object}
     */
    Object memberOpeningAmount(AdminUserModel user, String startTime, String endTime, Integer areaId, Integer page, Integer limit);

    /**
     * 总循环量
     *
     * @param user      用户
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param areaId    区域id
     * @param page      第页
     * @param limit     限制
     * @return {@link Object}
     */
    Object totalCirculation(AdminUserModel user, String startTime, String endTime, Integer areaId, Integer page, Integer limit);

    /**
     * 消费者数据
     *
     * @param user      用户
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param areaId    区域id
     * @return {@link Object }
     */
    Object consumerData(AdminUserModel user, String startTime, String endTime, Integer areaId);

    /**
     * 消费者数据列表
     *
     * @param user      用户
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param areaId    区域id
     * @param type      类型
     * @return {@link Object }
     */
    Object consumerDataList(Integer page,Integer limit,AdminUserModel user, String startTime, String endTime, Integer areaId, Integer type);

    /**
     * 传输数据
     *
     * @param user      用户
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param areaId    区域id
     * @return {@link Object }
     */
    Object transferData(AdminUserModel user, String startTime, String endTime, Integer areaId);

    /**
     * 传输数据列表
     *
     * @param page      第页
     * @param limit     限制
     * @param user      用户
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param areaId    区域id
     * @return {@link Object }
     */
    Object transferDataList(Integer type,Integer page,Integer limit,AdminUserModel user, String startTime, String endTime, Integer areaId);

    /**
     * 充值金额列表
     *
     * @param mobile    移动电话
     * @param page      第页
     * @param limit     限制
     * @param user      用户
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return {@link Object}
     */
    Object rechargeAmountList(String mobile, Integer page, Integer limit, AdminUserModel user, String startTime, String endTime);
}
